/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.criar;

import br.com.foxinline.modelo.Curso;
import br.com.foxinline.servico.CursoServico;
import br.com.foxinline.utilitario.Msg;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.context.RequestContext;

/**
 *
 * @author laverson
 */
@ViewScoped
@ManagedBean
public class ManagerCriarCurso implements Serializable {

    @EJB
    CursoServico cursoServico;
    private Curso curso;
    private Curso cursoDelete;
    private List<Curso> cursos;
    private static final String msgFailure = ":: Erro de validação: o valor é necessário.";

    @PostConstruct
    public void init() {
        curso = new Curso();
        cursos = new ArrayList<Curso>();
    }

    public void salvar() {
        try {
            cursoServico.salvar(curso);
            Msg.messagemInfo(Msg.SuccessFull);
            init();
        } catch (Exception e) {
            e.printStackTrace();
            Msg.messagemError(Msg.Failure);
        }
    }

    public void adicionar() {
        if (cursoValido()) {
            if (!cursos.contains(curso)) {
                cursos.add(curso);
                curso = new Curso();
            } else {
                for (Curso c : cursos) {
                    if (c.getCodigo().equals(curso.getCodigo())) {
                        Msg.messagemError("Já existe um curso com o código informado !");
                    }
                    if (c.getNome().equals(curso.getNome())) {
                        Msg.messagemError("Já existe um curso com o nome informado !");
                    }
                }
            }
        } else {
            RequestContext.getCurrentInstance().execute("required(true)");
        }
    }

    public void editar() {
    }

    public void deletar() {
        cursos.remove(cursoDelete);
    }

    public boolean cursoValido() {
        if (curso.getCodigo() == null || curso.getCodigo().equals("")) {
            Msg.messagemError("Código".concat(msgFailure));
        }
        if (curso.getNome() == null || curso.getNome().equals("")) {
            Msg.messagemError("Nome".concat(msgFailure));
        }
        if (curso.getCodigo() == null || curso.getCodigo().equals("")
                || curso.getNome() == null || curso.getNome().equals("")) {
            return false;
        }
        return true;
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public List<Curso> getCursos() {
        return cursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.cursos = cursos;
    }

    public Curso getCursoDelete() {
        return cursoDelete;
    }

    public void setCursoDelete(Curso cursoDelete) {
        this.cursoDelete = cursoDelete;
    }
}
